#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
#include <errno.h>
#include <fcntl.h>
#include <sys/stat.h>

int main(int argc, char* argv[]) {
	int input, output;

	if (argc < 3) {
		fprintf(stderr, "Bitte Input und Output eingeben \n");
		return EXIT_FAILURE;
	}

	if (argc > 3) {
		fprintf(stderr, "Bitte nur Input und Output Argumente eigeben \n");
		return EXIT_FAILURE;
	}

	// Datei oeffnen
	input = open(argv[1], O_RDONLY);

	if(input < 0){
		fprintf(stderr, "Oeffnen fehlgeschlagen! \n");
		return EXIT_FAILURE;
	}

	// Kopie erstellen
	output = open(argv[2], O_WRONLY | O_CREAT | O_EXCL, S_IRUSR|S_IWUSR);
	if(output < 0){
		fprintf(stderr, "Datei existiert bereits! \n");
		return EXIT_FAILURE;
	}


    char buffer[1024];
    int b = 0;
    
    while ((b = read(input, buffer, 1024)))
    {
        if (b < 0)
        {
		fprintf(stderr, "Fehler beim lesen! \n");
		return EXIT_FAILURE;
        }
        
        if (write(output, buffer, b) < 0)
        {
		fprintf(stderr, "Fehler beim schreiben! \n");
		return EXIT_FAILURE;
        }
    }
    
    close(input);
    close(output);
    
    return 0;
}
